The CCITT/ISO committee has standardized a set of compression algorithms for still and full motion digital video compression and decompression. These compression schemes are popularly known as JPEG, MPEG and H.261(P.times.64). Application of these standards is commonly used in video conferencing, CD-ROM based interactive videos for education and entertainment, digital video transmission for entertainment, still image catalogs, etc. All of the standards mentioned above, as well as emerging HDTV standards, utilize transform code compressed domain formats (referred to herein as "transform domain" formats), which include the Discrete Cosine Transform (DCT) format, the interframe predictive code format, such as the Motion Compensation (MC) algorithm which may be used in conjunction with the DCT format, and hybrid compressed formats. The DCT format is used in the compression standard for still images JPEG (Standard Draft, JPEG-9-R7, February 1991). The combination of Motion Compensation and Discrete Cosine Transform compression algorithm (MC/DCT) is used in a number of standards including: the compression standard for motion pictures (Generic coding of moving pictures and associated audio information, ISO/IEC 13818, ISO/IEC 11172), the standard for video conferencing (ITU-T Recommendation H.261, CODEC for Audiovisual Services at p.times.64 kbits/s), and some High Definition Television proposals.
FIG. 1 depicts the steps involved in decoding or decompressing a compressed audio/video signal. As shown, the steps involved in decoding of compressed audio/video signal 102 include demultiplexing 104 the compressed audio/video signal into compressed audio 108 and compressed video 106 data streams, performing video decoding on the compressed video data stream and performing audio decoding on the compressed audio data stream.
As stated above, the first step 104 involves demultiplexing the compressed audio/video signal into compressed audio 108 and compressed video 106 streams. Audio decoding is then performed on the compressed audio data stream 108. During audio decoding compressed audio stream 108 is unpacked and its symbols decoded using a table-lookup (also called Variable Length Decoding (VLD)). The decoded quantized audio samples then undergo dequantization and denormalization 118. The denormalized audio samples are then subjected to inverse transformation 120 which includes filtering, windowing and reconstruction. Decoded audio stream 122 is then fed to audio renderer 127 before being forwarded to audio output device 128.
Compressed video data stream 106 is subjected to video decoding. This includes variable length decoding (VLD) during which the compressed video data stream is parsed into symbols 110, dequantization 110, inverse discrete cosine transformation 112 and motion compensation 114. Decoded video data stream 116 is then fed to video renderer 124 before being forwarded to a graphics output device 126 such as a monitor. U.S. patent application Ser. No. 08/525,357, assigned to the assignee of the present application, describes in more detail some of the prior art and other novel techniques for decoding digitally compressed audio/video signals.
There are several prior art techniques used to perform the decompression steps depicted in FIG. 1. One such prior art technique uses advanced microprocessors, for example the 586 microprocessors, to perform real-time video decoding using software. Although this technique achieves real time audio/video decoding, a major drawback of this technique is that considerable CPU resources are consumed during the decoding process. This results in the video delivery being jerky and the audio output lacking full fidelity. As a result, the quality of the output video and audio signals are below their expected quality levels. The inefficient use of limited CPU resources also causes performance degradation of other concurrently executing applications due to lack of CPU resources.
In an effort to solve the inefficient CPU usage problem, prior art techniques perform audio/video decoding using dedicated hardware decoders which off-load the audio/video decoding tasks from the host CPU. These dedicated hardware decoders serve as slave processors to the host CPU, with the slave decoder performing the task of audio/video decoding. An example of such a dedicated hardware decoder is described in U.S. Pat. Nos. 5,253,078, and 5,270,832 assigned to C-Cube Microsystems, Milpitas, Calif. An example of a dedicated audio/video decoder is the CL480 device available from C-Cube Corporation.
One such dedicated hardware audio/video decoder system 130 is depicted in FIG. 2. As shown in FIG. 2, a dedicated hardware decoder 132 communicates with host CPU 134 over a host (PCI or ISA) bus interface 138. Dedicated hardware decoder 132 is also coupled to dynamic random access memory (DRAM) 133, video mixer 142 and audio digital to analog converter (DAC) 146. Video mixer 142 is also coupled to graphics subsystem 144 and DAC 146 is coupled to audio subsystem 148 such as a SoundBlasterm.TM. sound card.
Dedicated hardware decoder 132 accepts a multiplexed compressed audio/video signal as input. The dedicated hardware decoder then demultiplexes the compressed audio/video signal into compressed audio and compressed video data streams (corresponding to step 104 in FIG. 1). Dedicated hardware decoder 132 then performs variable length decoding, dequantization, inverse discrete cosine transformation and motion compensation on the compressed video data stream. The resultant decoded video data stream is then fed to mixer 142 which also receives a graphics input from graphics subsystem 144. The video output from mixer 142 is then forwarded to a video output device such as a monitor for display.
The compressed audio data stream is subjected to variable length decoding, denormalization, dequantization and inverse transformation including filtering and windowing functions, before being passed through DAC 148 and then forwarded to audio subsystem 148. The audio output from audio subsystem 148 can then be fed to any prior art audio output device.
As described above, the entire task of audio/video decoding is performed by dedicated hardware decoder 132. Host CPU 134 is utilized only for monitoring the audio/video processing tasks to be performed by dedicated hardware decoder 132. While this technique frees up CPU resources which would otherwise be dedicated to the audio/video processing tasks, it also has many disadvantages.
One major disadvantage is that dedicated hardware decoders are very expensive. This is because of the increased logic complexity needed to perform the entire audio/video decoding. Increased complexity also increases the size of the decoder making it more expensive. There is thus a need for a decoder which is cheaper and more compact than existing hardware decoders.
Another disadvantage of dedicated hardware decoders is that the audio/video processing performed by the decoders does not make efficient use of existing system resources. In the system shown in FIG. 2, redundant hardware such as audio/video DAC/mixer is needed for audio/video decoding even though CPU 134 is capable of handling these tasks efficiently. Thus, there is a need for a system which can make efficient use of available system resources.
Prior art systems like the one depicted in FIG. 2 also do not provide the ability to store decoded audio/video data streams in system memory. This makes prior art decoders incompatible with applications which use audio/video data streams stored in system memory as their input. As a result, these applications, which generally perform post-processing on the decoded audio/video data streams such as 3D effects and video resampling (scaling), cannot take advantage of the decoded audio/video outputs. Thus, there is a need for an audio/video decoding system which is compatible with other system applications.
Another disadvantage of prior art dedicated hardware decoders is that they can process only a single compressed audio/video signal at a time. This is due to the fact that the dedicated hardware decoder acts as a "black box," taking in a compressed audio/video signal as input and outputting decoded audio and video streams. It is not possible to perform concurrent processing of audio/video streams. Thus, there is a need for a decoding system which can perform concurrent processing of audio/video streams.